#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDir>
#include <QList>
#include <QDebug>
#include <QScrollBar>



/**
 * @brief 获取指定目录下特定格式的文件列表
 * @param dstDir: 目标文件夹
 * @param list: 得到的文件列表
 * @param szSuffix: 文件后缀名
 */
void GetSpecifiedFormatFiles(
    QFileInfoList & list,
    const QString & dstDir,
    QString suffix)
{

    // 获取目录文件列表
    QDir dir(dstDir);
    dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    dir.setSorting(QDir::Name | QDir::Reversed);

    QStringList filters;
    filters << suffix;
    dir.setNameFilters(filters);

    list = dir.entryInfoList();
//    foreach(QFileInfo item, list)
//    {
//        qDebug() << "PathName:" << item.absoluteFilePath();
//        qDebug() << "FilePath:" << item.absolutePath();
//        qDebug() << "FileName:" << item.fileName();
//        qDebug() << "BaseName:" << item.completeBaseName();
//     }
}

enum sortFlg{
  AZ, //升序
  ZA, //降序
};
int n8=0;
int f8=0;
bool compareBarData8(const QFileInfo &barAmount1, const QFileInfo &barAmount2)
{
    QString BaseName1 = barAmount1.completeBaseName();
    QString BaseName2 = barAmount2.completeBaseName();
    QStringList l1 = BaseName1.split(QRegExp("[ _.+-]"));
    QStringList l2 = BaseName2.split(QRegExp("[ _.+-]"));;

    if (n8 >= l1.length() || n8 >= l2.length())
    {
        return false;
    }

    if(f8 == sortFlg::AZ)
    {
        if (l1.at(n8) < l2.at(n8))
            return true;
    }
    else
    {
        if(l1.at(n8) > l2.at(n8))
            return true;
    }

    return false;
}

/**
 * @brief 按文件名第n列排序
 * @param lst: 文件信息列表
 * @param n: 指定列，以字符" _.+-"分割
 * @param flg: "ZA"降序，"AZ"升序
 */

void sortList(QFileInfoList &lst, int n, enum sortFlg flg)
{
    n8 = n;
    f8 = flg;
    qSort(lst.begin(), lst.end(), compareBarData8);
}


void MainWindow::on_pushButton_file_list_sort_clicked()
{
    QFileInfoList lst;
    GetSpecifiedFormatFiles(lst, "E:\\Desktop\\untitled\\data", "*.bin");
    sortList(lst, 2, sortFlg::ZA);

//    foreach(QFileInfo item, lst)
//    {
//         ui->listWidget->addItem(item.absoluteFilePath());
//         ui->comboBox->addItem(item.absoluteFilePath());
//     }

    return ;
}


//void MainWindow::on_comboBox_currentIndexChanged(int index)
//{
//    ui->listWidget->setCurrentRow(index);
//}

//void MainWindow::on_listWidget_clicked(const QModelIndex &index)
//{
//    ui->comboBox->setCurrentIndex(index.row());
//}

//void MainWindow::on_comboBox_currentTextChanged(const QString &arg1)
//{
//    qDebug() << arg1;
//}
